package com.gitee.johnvwan.rocketmq.persist;

public interface IPersist {

    /**
     * 消费状态：消费中
     */
    String CONSUME_STATUS_CONSUMING = "CONSUMING";
    /**
     * 消费状态：已消费
     */
    String CONSUME_STATUS_CONSUMED = "CONSUMED";


    /**
     * 设置消费如果nx
     *
     * @param dedupElement                      dedup元素
     * @param dedupProcessingExpireMilliSeconds dedup处理过期毫秒
     * @return boolean* @throws Exception 异常
     */
    boolean setConsumingIfNx(DedupElement dedupElement, long dedupProcessingExpireMilliSeconds) throws Exception;

    /**
     * 删除
     *
     * @param dedupElement dedup元素
     */
    void delete(DedupElement dedupElement);

    /**
     * 马克消耗
     *
     * @param dedupElement              dedup元素
     * @param dedupRecordReserveMinutes dedup记录储备分钟
     */
    void markConsumed(DedupElement dedupElement, long dedupRecordReserveMinutes);

    /**
     * 得到
     *
     * @param dedupElement dedup元素
     * @return {@link String}
     */
    String get(DedupElement dedupElement);

    /**
     * 打印信息
     *
     * @param dedupElement dedup元素
     * @return {@link String}
     */
    default String toPrintInfo(DedupElement dedupElement) {
        return dedupElement.toString();
    }
}
